package com.zyl.blog.processing.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.base.MPJBaseService;
import com.zyl.blog.common.domain.file.bean.FileTemplate;
import org.springframework.web.multipart.MultipartFile;

/**
 * @version v1.0
 * @ProjectName: Personal_Blog_Server
 * @Package: com.zyl.blog.processing.service
 * @ClassName: ExcelTemplateService
 * @Description:
 * @Author FinalFantasy
 * @Date 2025/8/14-14:02
 */
public interface ExcelTemplateService extends MPJBaseService<FileTemplate> {

    /**
     * 保存Excel模板
     * @param templateFile 模板文件
     * @param templateName 模板名称
     * @param category 分类
     * @param userId 创建者ID
     * @return 保存的模板信息
     */
    FileTemplate saveTemplate(MultipartFile templateFile, String templateName, String category, Long userId);

    /**
     * 获取模板详情
     * @param templateId 模板ID
     * @return 模板详情
     */
    FileTemplate getTemplateById(Long templateId);

    /**
     * 更新模板
     * @param templateId 模板ID
     * @param templateFile 新模板文件
     * @param templateName 模板名称
     * @param category 分类
     * @param userId 更新者ID
     * @return 更新后的模板
     */
    FileTemplate updateTemplate(Long templateId, MultipartFile templateFile, String templateName,
                            String category, Long userId);

    /**
     * 分页查询模板
     * @param page 页码
     * @param size 每页大小
     * @param category 分类（可选）
     * @param templateName 模板名称（可选，模糊查询）
     * @return 模板列表
     */
    Page<FileTemplate> listTemplates(int page, int size, String category, String templateName);

    /**
     * 删除模板
     * @param templateId 模板ID
     * @param userId 操作用户ID
     * @return 是否删除成功
     */
    boolean deleteTemplate(Long templateId, Long userId);

    /**
     * 设置默认模板
     * @param templateId 模板ID
     * @param userId 操作用户ID
     * @return 设置结果
     */
    boolean setDefaultTemplate(Long templateId, Long userId);
}
